As an ever increasing number of applications and services are being made available over networks such as the Internet, a number of content, application, and/or service providers are turning to technologies such as remote resource sharing and cloud computing. Cloud computing is a general term often used to describe the process of providing access to electronic resources through services, such as Web services, where the hardware and/or software used to support those services is made to be dynamically scalable to meet the needs of the services at any given time. A user or customer typically will rent, lease, or otherwise pay for access to resources through the cloud, and thus does not have to purchase and maintain the hardware and/or software to provide access to these resources. A service provider that owns those resources will usually take on the responsibility of maintaining and managing the resources, ensuring that they are highly available, scalable and otherwise ready to provide the necessary services.
In such cloud environments, multiple users often share resources such as remote server and storage devices. For example, an application owner may wish to deploy its application in the cloud by running the application on the resources of the service provider and enabling the masses of end users to concurrently send multiple requests to be executed against those resources. Certain concerns can arise, however, when multiple applications and services begin contending for the same resources of the service provider, such as hardware resources, software resources or some combination thereof. Because the creators of the applications may not have foreseen such resource contentions at the time of developing and compiling the application, most applications are not optimized for performance in light of such resource contention or other cloud-specific information.